home *** CD-ROM | disk | FTP | other *** search
/ Graphics Plus / Graphics Plus.iso / msdos / viewers / pcshow / dosio.asm < prev    next >
Assembly Source File  |  1991-07-01  |  2KB  |  118 lines

  1. ;
  2. ;  dosio.asm
  3. ;  Support for BIOS calls in NCSA PCShow
  4. ;****************************************************************************
  5. ;*                                                                            *
  6. ;*                                                                            *
  7. ;*      part of NCSA PCShow                                                     *
  8. ;*      by Quincey Koziol                                                         *
  9. ;*                                                                            *
  10. ;*      National Center for Supercomputing Applications                        *
  11. ;*      152 Computing Applications Building                                    *
  12. ;*      605 E. Springfield Ave.                                                *
  13. ;*      Champaign, IL  61820                                                    *
  14. ;*                                                                             *
  15. ;*                                                                             *
  16. ;****************************************************************************
  17.  
  18.     TITLE    DOSIO    -- LOW-LEVEL I/O FOR SANE HARDWARE HANDLING
  19.  
  20. ;
  21. ;    From original code by Tim Krauskopf    1984-1985
  22. ;    National Center for Supercomputing Applications
  23. ;
  24.     NAME    DOSIO
  25.  
  26. ;
  27. ;  Macros for reading and writing I/O ports
  28. ;
  29. MOUT    MACRO    REG,STUFF        ; one byte to the given I/O register
  30.     MOV    DX,REG
  31.     MOV    AL,STUFF
  32.     OUT    DX,AL
  33.     ENDM
  34. ;
  35. MIN    MACRO    REG             ; get one byte to al
  36.     MOV    DX,REG
  37.     IN    AL,DX
  38.     ENDM
  39. ;
  40. ;  Internal data 
  41. ;
  42.     X EQU    6                ;  for the large model programs
  43.  
  44.     INCLUDE    DOS.MAC
  45.     DSEG
  46.  
  47.     PUBLIC    DTAPTR                ; POINTER TO DTA LOCATION
  48.  
  49. DTAPTR    DW    0000H                ; dta ADDRESS FOR ME
  50. DTADS    DW    0000H                ; ds FOR dta
  51.  
  52.     ENDDS
  53. ;
  54. ;
  55. ;
  56. ;    The subroutines to call from C
  57. ;
  58.     PSEG
  59.  
  60.     PUBLIC  FIND_1ST,FINDNEXT
  61.  
  62.  
  63. ;**********************************************************************
  64. ;
  65. ;  find first
  66. ;    make dos find file names according to wildcards
  67. ;  findfirst(filename,attr)
  68. ;    char *filename; int attr;
  69. ;
  70. FIND_1ST    PROC    FAR
  71.     PUSH    BP
  72.     MOV        BP,SP
  73.     PUSH    ES
  74.     PUSH    DS
  75.     
  76.     MOV        AH,02FH                    ; dos FUNCTION GET dta
  77.     INT        21H
  78.     MOV        DTAPTR,BX                ; SQUIRREL A COPY FOR ME
  79.     MOV        AX,ES
  80.     MOV        DTADS,AX
  81.  
  82.     MOV        AX,[BP+X+2]                ; DS OF FILENAME PTR
  83.     MOV        DS,AX
  84.     MOV        DX,[BP+X]                ; PTR PART OF FILENAME
  85.     MOV        CX,[BP+X+4]                ; ATTRIBUTE TO SEARCH FOR
  86.     MOV        AH,04EH                    ; FIND MATCHING FILE dos CALL
  87.     INT        21H
  88.     JC        BADRET                    ; AX ALREADY CONTAINS ERROR CODE
  89.     XOR        AX,AX
  90.  
  91. BADRET:
  92.     POP        DS
  93.     POP        ES
  94.     POP        BP
  95.     RET
  96. FIND_1ST    ENDP
  97.  
  98. ;
  99. ;  findnext()
  100. ;  will find entries that follow findfirst
  101. ;  no need to respecify file name
  102. ;
  103. FINDNEXT    PROC    FAR
  104.     PUSH    BP
  105.  
  106.     MOV        AH,04FH                    ; FIND NEXT dos CALL
  107.     INT        21H
  108.     JC        NBADRET
  109.     XOR        AX,AX
  110.  
  111. NBADRET:
  112.     POP        BP
  113.     RET
  114. FINDNEXT    ENDP
  115.  
  116.     ENDPS
  117.     END
  118.